package com.hello.system.domain;

import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.hello.common.core.annotation.Excel;
import com.hello.common.core.web.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;

/**
 * 设备对象 rental_devices
 * 
 * @author hello
 * @date 2025-07-20
 */
@Data
@EqualsAndHashCode(callSuper = true)
public class RentalDevices extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 设备ID */
    private Long deviceId;

    /** 设备编码 */
    @Excel(name = "设备编码")
    private String deviceCode;

    /** 设备名称 */
    @Excel(name = "设备名称")
    private String deviceName;

    /** 分类ID */
    @Excel(name = "分类ID")
    private Long categoryId;

    /** 品牌 */
    @Excel(name = "品牌")
    private String brand;

    /** 型号 */
    @Excel(name = "型号")
    private String model;

    /** 规格参数 */
    @Excel(name = "规格参数")
    private String specifications;

    /** 设备描述 */
    @Excel(name = "设备描述")
    private String description;

    /** 设备图片，JSON格式 */
    @Excel(name = "设备图片，JSON格式")
    private String images;



    /** 日租金 */
    @Excel(name = "日租金")
    private BigDecimal dailyRent;

    /** 押金 */
    @Excel(name = "押金")
    private BigDecimal deposit;

    /** 最少租赁天数 */
    @Excel(name = "最少租赁天数")
    private Long minRentDays;

    /** 最多租赁天数 */
    @Excel(name = "最多租赁天数")
    private Long maxRentDays;

    /** 设备状态：0-下架，1-可租，2-已租出，3-维修中，4-损坏 */
    @Excel(name = "设备状态：0-下架，1-可租，2-已租出，3-维修中，4-损坏")
    private Integer status;

    /** 设备所在省份 */
    @Excel(name = "设备所在省份")
    private String locationProvince;

    /** 设备所在城市 */
    @Excel(name = "设备所在城市")
    private String locationCity;

    /** 设备所在区县 */
    @Excel(name = "设备所在区县")
    private String locationDistrict;

    /** 设备详细地址 */
    @Excel(name = "设备详细地址")
    private String locationAddress;

    /** 购买日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "购买日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date purchaseDate;

    /** 购买价格 */
    @Excel(name = "购买价格")
    private BigDecimal purchasePrice;

    /** 创建时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date createdTime;

    /** 更新时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "更新时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date updatedTime;

    public void setDeviceId(Long deviceId) 
    {
        this.deviceId = deviceId;
    }

    public Long getDeviceId() 
    {
        return deviceId;
    }
    public void setDeviceCode(String deviceCode) 
    {
        this.deviceCode = deviceCode;
    }

    public String getDeviceCode() 
    {
        return deviceCode;
    }
    public void setDeviceName(String deviceName) 
    {
        this.deviceName = deviceName;
    }

    public String getDeviceName() 
    {
        return deviceName;
    }
    public void setCategoryId(Long categoryId) 
    {
        this.categoryId = categoryId;
    }

    public Long getCategoryId() 
    {
        return categoryId;
    }
    public void setBrand(String brand) 
    {
        this.brand = brand;
    }

    public String getBrand() 
    {
        return brand;
    }
    public void setModel(String model) 
    {
        this.model = model;
    }

    public String getModel() 
    {
        return model;
    }
    public void setSpecifications(String specifications) 
    {
        this.specifications = specifications;
    }

    public String getSpecifications() 
    {
        return specifications;
    }
    public void setDescription(String description) 
    {
        this.description = description;
    }

    public String getDescription() 
    {
        return description;
    }
    public void setImages(String images) 
    {
        this.images = images;
    }

    public String getImages() 
    {
        return images;
    }

    public void setDailyRent(BigDecimal dailyRent) 
    {
        this.dailyRent = dailyRent;
    }

    public BigDecimal getDailyRent() 
    {
        return dailyRent;
    }
    public void setDeposit(BigDecimal deposit) 
    {
        this.deposit = deposit;
    }

    public BigDecimal getDeposit() 
    {
        return deposit;
    }
    public void setMinRentDays(Long minRentDays) 
    {
        this.minRentDays = minRentDays;
    }

    public Long getMinRentDays() 
    {
        return minRentDays;
    }
    public void setMaxRentDays(Long maxRentDays) 
    {
        this.maxRentDays = maxRentDays;
    }

    public Long getMaxRentDays() 
    {
        return maxRentDays;
    }
    public void setStatus(Integer status) 
    {
        this.status = status;
    }

    public Integer getStatus() 
    {
        return status;
    }
    public void setLocationProvince(String locationProvince) 
    {
        this.locationProvince = locationProvince;
    }

    public String getLocationProvince() 
    {
        return locationProvince;
    }
    public void setLocationCity(String locationCity) 
    {
        this.locationCity = locationCity;
    }

    public String getLocationCity() 
    {
        return locationCity;
    }
    public void setLocationDistrict(String locationDistrict) 
    {
        this.locationDistrict = locationDistrict;
    }

    public String getLocationDistrict() 
    {
        return locationDistrict;
    }
    public void setLocationAddress(String locationAddress) 
    {
        this.locationAddress = locationAddress;
    }

    public String getLocationAddress() 
    {
        return locationAddress;
    }
    public void setPurchaseDate(Date purchaseDate) 
    {
        this.purchaseDate = purchaseDate;
    }

    public Date getPurchaseDate() 
    {
        return purchaseDate;
    }
    public void setPurchasePrice(BigDecimal purchasePrice) 
    {
        this.purchasePrice = purchasePrice;
    }

    public BigDecimal getPurchasePrice() 
    {
        return purchasePrice;
    }
    public void setCreatedTime(Date createdTime) 
    {
        this.createdTime = createdTime;
    }

    public Date getCreatedTime() 
    {
        return createdTime;
    }
    public void setUpdatedTime(Date updatedTime) 
    {
        this.updatedTime = updatedTime;
    }

    public Date getUpdatedTime() 
    {
        return updatedTime;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("deviceId", getDeviceId())
            .append("deviceCode", getDeviceCode())
            .append("deviceName", getDeviceName())
            .append("categoryId", getCategoryId())
            .append("brand", getBrand())
            .append("model", getModel())
            .append("specifications", getSpecifications())
            .append("description", getDescription())
            .append("images", getImages())

            .append("dailyRent", getDailyRent())
            .append("deposit", getDeposit())
            .append("minRentDays", getMinRentDays())
            .append("maxRentDays", getMaxRentDays())
            .append("status", getStatus())
            .append("locationProvince", getLocationProvince())
            .append("locationCity", getLocationCity())
            .append("locationDistrict", getLocationDistrict())
            .append("locationAddress", getLocationAddress())
            .append("purchaseDate", getPurchaseDate())
            .append("purchasePrice", getPurchasePrice())
            .append("createdTime", getCreatedTime())
            .append("updatedTime", getUpdatedTime())
            .toString();
    }
}
